草庐IT

Java XPathFactory 线程安全

全部标签

windows - C# 当托管线程结束其时间片时,它会引发上下文切换吗?

在Russinovich的书中它说线程(注意:这是关于OS线程)将需要分派(dispatch)(调度)如果它a)准备好b)结束它的时间片、产量或block。我的C#实时应用程序中有一个托管线程,对于实现尽可能少的上下文切换非常重要。此线程具有最高优先级,进程具有实时优先级,这使得我的线程操作系统优先级为31中的26。当我的线程结束其时间片并且没有优先级>=26的等待线程时,我的线程会发生什么?是否会有上下文切换来重新安排我的线程再次运行,或者将避免上下文切换并且线程将不间断地运行?如果有上下文切换-谁能告诉平均需要多少CPU周期?我希望得到简单且明确的答案!谢谢!

.net - WPF Set Owner on Window 在自己的专用 UI​​ 线程上创建

我有以下代码,它在它自己的专用UI​​线程上运行WPF窗口://CreatethededicatedUIthreadforAddEditPairwindowThreadaddEditPairThread=newThread(()=>{//InitialisetheaddeditpairwindowaddEditPair=newAddEditPair(this);addEditPair.PairRecordAdded+=newEventHandler(addEditPair_PairRecordAdded);addEditPair.PairRecordEdited+=newEventHa

C++ 从线程 ID 列表中查找 GUI 线程

我正在用C++构建一个应用程序,它使用WindowsHook来控制第三方程序。我正在制作的程序是一个教程程序,用于展示如何使用这些第三方程序。我可以找到我想要挂接的第三方程序的进程ID,然后我可以查询这个进程ID以找到一个线程ID列表,用作WindowsAPI函数SetWindowsHookEx的参数。但是,我担心从正在运行的进程的线程ID列表中,我会挂接到一个可能随时结束的线程。理想情况下,我想连接到运行主gui的线程,这很可能是最长生命的线程之一(即使它不是最长生命的线程,教程程序也被设计为与GUI一起工作所以它仍然是理想的)。如果第三方应用程序有多个图形用户界面,那么我想找到主图

windows - 调用 ImpersonateSelf() 是否会取消对同一线程所做的所有安全 token 调整?

我不明白ImpersonateSelf().假设我的代码在某个主机进程中运行。该主机进程创建了一个新线程并调整了线程安全性,以便线程具有最小权限,现在新线程执行我的代码。我的代码调用ImpersonateSelf(SecurityImpersonation);会有什么影响?它会重置为该线程所做的所有权限调整吗? 最佳答案 是的。它复制进程token并将其分配为当前线程的模拟token。旧token的特权无关紧要,因为线程不再使用该token。如果要合并权限,请使用GetTokenInformation获取旧权限并自己复制和分配模拟t

windows - 我怎样才能告诉 Windows XP/7 在我的代码的特定段期间不要切换线程?

我想阻止WindowsXP/7在后台线程中运行的代码的时间关键部分进行线程切换。我很确定我无法创造一种我可以保证不会发生的情况,因为系统驱动程序等的优先级更高的中断。但是,我想降低那部分线程切换的可能性我的代码尽可能少。是否有任何创建线程标志或WindowAPI调用可以帮助我?一般技术技巧也很受欢迎。如果有一种方法可以在不必将线程优先级提高到实时关键的情况下完成此操作,那就太好了,因为如果我这样做的话,我担心会给用户带来系统性能问题。更新:在看到对我的原始帖子的第一批回复后,我添加了此更新。提出这个问题的具体应用与实时音频流有关。我想尽我所能消除每一点延迟。在对我的原始设计进行编码后,

c# - 如何获取 Windows 服务登录用户的安全 token ?

我需要模拟特定Windows服务的登录用户帐户。我已经能够使用WMI获取用户名(遗憾的是,LogOn用户身份似乎没有使用任何与常规Windows服务相关的.NET类公开)。但是,只有用户名(可以是本地帐户或域帐户)如何获取该Windows身份的token?可以提供token的LogonUserWinAPI调用需要密码作为参数,这显然是不可用的。用户输入不是一个选项。任何见解将不胜感激。 最佳答案 最后做了以下事情:检查服务是否正在运行。如果不启动服务。使用WMI从服务名称中获取PID。使用.NETProcess类从PID获取进程句柄

windows - 我是否需要编码 CreateStreamOnHGlobal 返回的 IStream,以便跨线程使用?

我有一个COM流对象(IStream),是用CreateStreamOnHGlobal创建的.我想在同一进程的不同线程中使用它。我是否需要编码流对象本身(使用CoMarshalInterface等)?或者它已经是线程安全的了?已编辑,读/写/查找与我的代码中的锁正确同步。 最佳答案 COM将IStream视为一种特殊类型的接口(interface),可以安全地跨线程使用。这是必要的,以便可以使用CoMarshalInterThreadInterfaceInStream在IStream中跨线程边界编码其他接口(interface)。.

c# - 是否可以等到其他线程处理输入消息发布到它?

我想可靠地模拟用户对其他窗口的输入。我为此使用了SendInput,但是我需要等到目标应用程序处理完输入后再发送更多。据我所知,SendInput,尽管它的名字,实际上是将消息发布到队列并且不会等到它们被处理。我的尝试是基于等待消息队列至少一次为空的想法。由于我无法直接检查其他线程的消息队列(至少我不知道这样做的方法),我正在使用AttachThreadInput将目标线程的队列附加到该线程的队列,然后PeekMessage进行检查。为了检查功能,我使用了带有一个窗口和一个按钮的小应用程序。单击按钮时,我调用Thread.Sleep(15000)有效地停止消息处理,从而确保接下来的15

windows - 如何根据子线程的线程 ID 查找进程的 pid?

给定一个线程的线程ID,我需要找到拥有它的进程的pid。我想通过toolhelp库枚举所有线程并使用THREADENTRY32的“th32OwnerProcessID”成员,但我正在寻找更简单(更短)的方法。我找不到直接的API来执行此操作,也无法在StackOverflow中找到答案。提前致谢。 最佳答案 您需要两个WinAPI函数。使用OpenThread获取线程的句柄|,它以线程ID作为参数。使用GetProcessIdOfThread获取进程ID,它将句柄作为参数。在尝试使用它们之前,您需要阅读有关其使用限制的链接文档。

c++:让用户进程写入 LOCAL_SYSTEM 命名管道 - 自定义安全描述符

我有一个作为LocalSystem运行的服务,它在登录用户的session中创建一个进程。然后该服务创建一个命名管道,客户端连接到该管道进行读写。根据https://msdn.microsoft.com/en-us/library/aa365600%28v=vs.85%29.aspx客户端只能从管道中读取(它不是Admin,不是Creator,也不是LocalSystem)。我创建了一个安全描述符来授予用户读写访问权限。但这没有用。所以我尝试为Everyone-Group提供读写访问权限。但这也行不通。我的客户端返回的错误代码始终是ACCESS_DENIED(5)。我很高兴知道我做错了